import { defineStore } from 'pinia';

// 定义两种字体模式的配置
const MODE_CONFIG = {
  young: {
    label: '年轻模式（标准字体）',
	icon:"icon-jiashu",
    fontSize: '14px' // 标准字体大小
  },
  elder: {
    label: '老人模式（放大字体）',
	icon:"icon-laorenjiance",
    fontSize: '16px' // 放大后的字体大小
  }
};

export const useFontSizeStore = defineStore('fontSize', {
  state: () => ({
    // 当前显示模式（默认年轻模式）
    displayMode: 'young',
    // 当前字体大小（默认标准字体）
    currentFontSize: MODE_CONFIG.young.fontSize
  }),
  
  getters: {
    // 获取带单位的当前字体大小（用于page-meta）
    currentFontSizeRpx() {
      return this.currentFontSize;
    },
    // 获取当前模式的配置信息
    currentModeConfig() {
      return MODE_CONFIG[this.displayMode] || MODE_CONFIG.young;
    },
    // 获取所有可用模式
 // 在 useFontSizeStore 的 getters 中
 allModes() {
   return Object.keys(MODE_CONFIG).map(key => ({
     value: key,
     label: MODE_CONFIG[key].label,
     icon: MODE_CONFIG[key].icon, // 关键：必须包含这一行
     fontSize: MODE_CONFIG[key].fontSize
   }));
 }
  },
  
  actions: {
    // 设置显示模式并同步更新字体大小
    setDisplayMode(mode) {
      // 验证模式是否有效
      if (Object.keys(MODE_CONFIG).includes(mode)) {
        this.displayMode = mode;
        this.currentFontSize = MODE_CONFIG[mode].fontSize;
        this.saveToStorage(); // 保存到本地存储
      } else {
        console.warn(`无效的显示模式: ${mode}，已使用默认模式`);
      }
    },
    
    // 直接设置字体大小（备用方法）
    setCurrentFontSize(size) {
      // 简单验证格式
      if (typeof size === 'string' && size.endsWith('rpx')) {
        this.currentFontSize = size;
        this.saveToStorage();
      } else {
        console.warn(`无效的字体大小格式: ${size}，必须是带rpx单位的字符串`);
      }
    },
    
    // 从本地存储加载设置
    loadFromStorage() {
      try {
        const saved = uni.getStorageSync('fontSizeSettings');
        if (saved && typeof saved === 'object') {
          // 验证加载的模式是否有效
          if (Object.keys(MODE_CONFIG).includes(saved.displayMode)) {
            this.displayMode = saved.displayMode;
            this.currentFontSize = saved.currentFontSize;
          }
        }
      } catch (error) {
        console.error('加载字体设置失败:', error);
      }
    },
    
    // 保存设置到本地存储
    saveToStorage() {
      try {
        uni.setStorageSync('fontSizeSettings', {
          displayMode: this.displayMode,
          currentFontSize: this.currentFontSize
        });
      } catch (error) {
        console.error('保存字体设置失败:', error);
      }
    }
  }
});
